package com.zmn.plat.business.interfaces.service.tariff;

import java.util.List;

import com.zmn.plat.model.entity.service.group.ServiceGroup;
import com.zmn.plat.model.entity.service.tariff.ServiceTariff;
import com.zmn.plat.model.vo.service.tariff.ServiceTariffVO;

/**
 * @author tanbiao
 * @description
 * @since 2019/11/22 15:45
 * @modifier
 **/
public interface ServiceTariffBService {

    /**
     * 功能描述 :详情页展示，新增的情况下返回新对象同时赋予排序默认值
     *
     * @param tariffId
     * @return com.zmn.plat.model.entity.service.tariff.ServiceTariff
     * @author tanbiao
     * @since 2019/12/5
     * @modifier
     */
    ServiceTariff findByKey(Integer tariffId);

    /**
     * 功能描述 :价格表下通用产品价格表
     *
     * @param tariffId
     * @return com.zmn.plat.model.entity.service.tariff.ServiceTariff
     * @author tanbiao
     * @since 2019/12/5
     * @modifier
     */
    List<ServiceGroup> listGroupByTariffIdAndServCategIdAndCategOneId(Integer tariffId, Integer servCategId, Integer categOneId);

    /**
     * 描述: 根据渠道和产品ID查询价格表信息
     *
     * @param channelId
     *            渠道ID
     * @param productId
     *            产品ID
     * @param traiffType
     *            价格表类型：1服务价格，2计价器价格，3提前支付价格1.服务价格表，2.计价器价格表
     * @param showType
     *            产品类型：1 后台 2 前台 3 计价器
     * @param type
     *            保内保外 1.保外 2.保内
     * @return
     * @auther tanghongjun
     * @since 2020/3/27 9:37
     */
    ServiceTariff getTariffByChannelIdAndProductIdAndShowTypeAndType(Integer channelId, Integer productId, Integer traiffType, Integer showType, Integer type);

    /**
     * 功能描述 :新增，需要检查 限制条件：1同类型价格表名称不可重复 2.同类型价格表最多一个默认价格表 3.停用价格表，则其关联的服务分类+后台一级产品分类的价格表，以及：产品关联的价格表，也都将禁用 4、默认价格表不可被停用
     *
     * @param faultTariff
     * @param creater
     * @return java.lang.Integer
     * @author tanbiao
     * @since 2019/10/22
     * @modifier
     */
    Integer insertAll(ServiceTariff faultTariff, String creater);

    /**
     * 功能描述：修改，需要检查 限制条件：1同类型价格表名称不可重复 2.同类型价格表最多一个默认价格表 3.停用价格表，则其关联的服务分类+后台一级产品分类的价格表，以及：产品关联的价格表，也都将禁用 4、默认价格表不可被停用
     *
     * @param faultTariff
     * @param updater
     * @return java.lang.Integer
     * @author tanbiao
     * @since 2019/10/22
     * @modifier
     */
    Integer updateAll(ServiceTariff faultTariff, String updater);

    /**
     * 更新状态,需要进行的检查 1.停用价格表，则其关联的服务分类+后台一级产品分类的价格表，以及：产品关联的价格表，也都将禁用 2、默认价格表不可被停用
     *
     * @param ids
     * @param status
     * @param mcStaffName
     * @return
     * @author tanbiao
     * @since 2019/10/22
     * @modifier
     */
    Integer updateStatusBatchByKey(List<Integer> ids, Integer status, String mcStaffName);

    /**
     * 功能描述 :复制价格表 a 价格表都有数据的时候，修改； b 原价格表为空，被复制价格表有数据，直接复制，将产品价格表是否默认和状态变位初始状态（非默认，停用） c 原价格表有数据，被复制价格表没有数据，原价格表清空 d
     * 复制范围：项目分组、项目和产品价格表（产品价格表的是否默认、价格表状态之外，其他都复需制）
     *
     * @param faultTariffVO
     * @param mcStaffRealName：操作人
     * @return java.lang.Integer
     * @author tanbiao
     * @since 2020/3/5
     * @modifier
     */
    void copyTariff(ServiceTariffVO faultTariffVO, String mcStaffRealName);

}
